A microprocessor typically includes an IO (Input Output) gateway subsystem for connecting multiple peripherals to a microprocessor bus. A system memory and controller is also typically connected to the microprocessor bus. Specifically, the IO gateway subsystem acts as a gateway between multiple IO devices and the microprocessor bus. The IO gateway allows the multiple IO devices to transfer data to and from the system memory via the microprocessor bus.
More specifically, the IO gateway subsystem of a microprocessor typically includes various interfaces that manage read and write requests between the multiple IO devices and the microprocessor bus. An interface such as a DMA (Direct Memory Access) interface typically includes a DMA engine that queues the read and write requests of multiple DMA devices in a shared DMA buffer. The DMA engine typically arbitrates access to the shared DMA buffer among the multiple IO devices.